
#ifndef __DAEMON__
#define __DAEMON__

#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

void MyDaemon()
{
    // 1.屏蔽影响信号，SIGPIPE SIGCHIL
    // 2.fork, 确保自身不是组长
    // 3.setsid，设置守护进程
    // 4.将输入，输出,错误重定向到 /dev/null
    signal(SIGPIPE, SIG_IGN);
    signal(SIGCHLD, SIG_IGN);
    pid_t pd = fork();
    if (pd > 0)
        exit(0);
    setsid();
    int devnull = open("dev/null", O_RDONLY | O_WRONLY);
    if (devnull)
    {
        dup2(devnull, 0);
        dup2(devnull, 1);
        dup2(devnull, 2);
    }
}

#endif
